package com.djx.plus.inter;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @Author dingjunxiong
 * @date 2021/10/11 17:33
 * 权限认证 自定义注解
 * @Target定义注解的使用位置，用来说明该注解可以被声明在那些元素之前。
 * ElementType.TYPE：说明该注解只能被声明在一个类前。
 * ElementType.FIELD：说明该注解只能被声明在一个类的字段前。
 * ElementType.METHOD：说明该注解只能被声明在一个类的方法前。
 * ElementType.PARAMETER：说明该注解只能被声明在一个方法参数前。
 * ElementType.CONSTRUCTOR：说明该注解只能声明在一个类的构造方法前。
 * ElementType.LOCAL_VARIABLE：说明该注解只能声明在一个局部变量前。
 * ElementType.ANNOTATION_TYPE：说明该注解只能声明在一个注解类型前。
 * ElementType.PACKAGE：说明该注解只能声明在一个包名前
 * @Retention用来说明该注解类的生命周期。
 * RetentionPolicy.SOURCE: 注解只保留在源文件中
 * RetentionPolicy.CLASS : 注解保留在class文件中，在加载到JVM虚拟机时丢弃
 * RetentionPolicy.RUNTIME: 注解保留在程序运行期间，此时可以通过反射获得定义在某个类上的所有注解。
 * @Constraint通过使用validatedBy来指定与注解关联的验证器
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Permission {
    /**
     * 资源key
     * */
    String resourceKey();
}
